From: Aaron Schulz Date: Tue, 13 Sep 2016 04:48:51 +0000 (-0700) Subject: Make DeferredUpdates call setTransactionTicket() on all DataUpdate tasks X-Git-Tag: 1.31.0-rc.0~5615^2 X-Git-Url: http://git.cyclocoop.org/%7D%7Cconcat%7B?a=commitdiff_plain;h=d1e15787bd7ff24798dd8bdfa32e300afb658af6;p=lhc%2Fweb%2Fwiklou.git Make DeferredUpdates call setTransactionTicket() on all DataUpdate tasks This assues that things like LinksUpdate/LinksDeletionUpdate will have a proper ticket for commitAndWaitForReplication() Change-Id: I8234510efb706394c39c4027ddf54ace76983aa9 --- diff --git a/includes/deferred/DeferredUpdates.php b/includes/deferred/DeferredUpdates.php index 6921b668ba..d24ebde7d6 100644 --- a/includes/deferred/DeferredUpdates.php +++ b/includes/deferred/DeferredUpdates.php @@ -160,6 +160,8 @@ class DeferredUpdates { $lbFactory = $services->getDBLoadBalancerFactory(); $method = RequestContext::getMain()->getRequest()->getMethod(); + $ticket = $lbFactory->getEmptyTransactionTicket( __METHOD__ ); + /** @var ErrorPageError $reportableError */ $reportableError = null; /** @var DeferrableUpdate[] $updates Snapshot of queue */ @@ -182,7 +184,13 @@ class DeferredUpdates { // Order will be DataUpdate followed by generic DeferrableUpdate tasks $updatesByType = [ 'data' => [], 'generic' => [] ]; foreach ( $updates as $du ) { - $updatesByType[$du instanceof DataUpdate ? 'data' : 'generic'][] = $du; + if ( $du instanceof DataUpdate ) { + $du->setTransactionTicket( $ticket ); + $updatesByType['data'][] = $du; + } else { + $updatesByType['generic'][] = $du; + } + $name = ( $du instanceof DeferrableCallback ) ? get_class( $du ) . '-' . $du->getOrigin() : get_class( $du );